iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0
Modern Web

創意前端設計:用 Vue.js 打造 30 個互動實用功能系列 第 14

Day14 Vue.js 動效分類實戰 (6) 視覺炫彩特輯 - 元件化你的動態炫彩文字與按鈕

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20240928/20124462IAOIfHutra.jpg

運用漸變、動畫與動態樣式,讓你的網頁元素閃耀出迷人的色彩魅力!

哈囉!受夠了中規中矩的文字了嗎?
是時候讓你的網頁閃耀起來啦!

今天我們要用 Vue.js 來玩轉動態炫彩文字和按鈕元件,把那些呆板的設計通通甩開!
把炫彩漸變、流動的動畫、還有會炫彩的按鈕,這些效果通通輕鬆搞定~

不用怕什麼技術難度,這次的實作保證好上手!
我們會把那些看起來酷炫到不行的視覺效果拆解得簡單又有趣,讓你的網頁充滿色彩、動感滿滿!
快來跟我一起解鎖這些炫彩神技,讓你的網頁變成大家目光的焦點吧!


img


你也喜歡視覺炫彩嗎?

視覺炫彩是利用豐富的顏色、動態效果和濾鏡技術,讓你的設計瞬間變得超級吸睛!
這種風格不僅增強視覺衝擊力,還讓使用者更有互動和沉浸的感覺。

視覺炫彩的核心技術

  1. 顏色漸變:用漸變色彩為設計增添深度和動感,讓元素更豐富。
  2. 動態動畫:加入動畫效果,讓設計不再靜止,更有生命力。
  3. 濾鏡效果:透過模糊、飽和度等濾鏡效果,強化視覺屬性,吸引眼球。
  4. 光影立體:光影設計讓元素看起來更有立體感和真實感。
  5. 色彩心理學:巧妙搭配高飽和度的顏色,讓設計更具吸引力和情感表達。
  6. 互動反饋:加入互動效果,讓每個按鈕、文字都能與使用者交流。

視覺炫彩的核心在於通過顏色、動態和光影技術,創造生動且引人注目的視覺效果,讓設計更具魅力。


從設計到實作:動態 Hover 炫彩按鈕全攻略

https://ithelp.ithome.com.tw/upload/images/20240928/20124462EQhlno1SOn.png

  • 炫彩按鈕程式碼 ColorfulButton.vue
  • template 部分
<template>
  <div class="bg-[#191919] h-screen flex items-center justify-center">
    <a
      href="#"
      class="colorful-button flex relative items-center justify-center rounded-[5px] w-[calc(20vw+6px)] h-[calc(8vw+6px)] text-white font-bold uppercase no-underline overflow-hidden hover:animate-slidebg"
      alt="Button"
    >
      <span class="w-[20vw] h-[8vw] bg-[#191919] flex items-center justify-center">
        Hover Me
      </span>
    </a>
  </div>
</template>

結構設計:

  • 使用 a 元素作為按鈕,並添加 colorful-button 的類別來應用樣式。
  • 外層使用 div,並設置 flex 屬性使按鈕居中,讓頁面簡潔且專注於按鈕本身。
  • span 元素作為按鈕的文本容器,設置背景顏色與按鈕保持一致,並使用 flex 對齊文字。

  • 炫彩核心樣式設計
@layer components {
  .colorful-button {
    background-image: linear-gradient(
      90deg,
      #00c0ff 0%,
      #ffcf00 49%,
      #fc4f4f 80%,
      #00c0ff 100%
    );
    background-size: 200% auto; /* 背景擴展以製造滑動效果 */
    transition: background-position 0s; /* 移除背景過渡延遲 */
  }

  .hover\:animate-slidebg:hover {
    animation: slidebg 2s linear infinite; /* 觸發背景滑動動畫 */
  }

  @keyframes slidebg {
    0% {
      background-position: 0% 50%; /* 起始位置 */
    }

    100% {
      background-position: 200% 50%; /* 滑動到最終位置 */
    }
  }
}

  • 漸變背景設計 (background-image):

    • 使用 linear-gradient 為按鈕設置漸變背景,顏色從藍色 (#00c0ff) 過渡到黃色 (#ffcf00) 和紅色 (#fc4f4f),再回到藍色,創造出炫彩效果。
  • 背景大小 (background-size):

    • 設定 background-size: 200% auto;,讓背景的寬度為按鈕的兩倍,為動畫滑動創造空間。
  • 動畫設計 (@keyframes slidebg):

    • 使用 @keyframes 定義動畫效果,背景從左到右滑動。這個動畫的持續時間為 2 秒,並無限次重複 (infinite)。
  • 滑動效果 (hover:animate-slidebg):

    • 當使用者將滑鼠懸停在按鈕上時,背景將根據動畫設定進行滑動,這讓按鈕看起來像是流動著色彩,增添了動感。

炫彩技術亮點與設計優勢

  • 視覺動感強:透過色彩流動的動態效果,按鈕變得更具吸引力和互動性。

  • 簡潔且有衝擊力:按鈕的漸變和滑動效果讓設計看起來高級又酷炫,而實作方式簡單易懂。


元件化你的動態炫彩文字:實現高度客製化

https://ithelp.ithome.com.tw/upload/images/20240928/20124462Hh7c5ui8gr.png

你是否曾經想過,把炫彩文字效果變成一個隨時可以重複使用的元件?
變成自己專屬的「動效庫」?
在這段落除了實作這些動態炫彩文字,還會教你如何輕鬆元件化,讓你的設計不僅閃耀動感,還能靈活應用於不同的專案中。

  • 炫彩文字程式碼 ColorfulText.vue
  • template結構與 SVG 濾鏡效果
<template>
    <div class="flex justify-center items-center">
        <div class="flex justify-center items-center">
            <svg width="0" height="0">
                <filter id="f" x="-50%" y="-200%" width="200%" height="500%">
                    <feGaussianBlur stdDeviation="35"></feGaussianBlur>
                    <feColorMatrix type="saturate" values="1.3"></feColorMatrix>
                    <feComposite in="SourceGraphic"></feComposite>
                </filter>
            </svg>
            <h1 class="gradient-text uppercase text-center animate-k"
                :style="{ fontSize: fontSize || 'clamp(1.5rem, 5vw, 2.5rem)' }">
                {{ textProps.text }}
            </h1>
        </div>
    </div>
</template>
  • 設計細節

    • SVG 濾鏡:使用 <filter> 來為文字添加濾鏡效果,使文字更加立體且充滿視覺衝擊。feGaussianBlur 添加模糊效果,而 feColorMatrix 增強了色彩的飽和度。
    • 字體大小控制h1 元素中的 :style 綁定 fontSize,若外部沒有指定字體大小,則使用預設的 clamp(1.5rem, 5vw, 2.5rem),確保文字大小根據螢幕自適應。
  • 元件結構與設計概述

這個元件的設計主要是為了將炫彩文字效果封裝成一個可重複使用的 Vue 元件,並透過 props 接受外部傳入的文字內容和字體大小。
這種設計使得該元件在不同情境中可以靈活應用,並且易於客製化。

  • TypeScript 與 Props 定義
<script lang="ts" setup>
import { defineProps } from 'vue';

// 定義 props 來接受外部傳入的文字和字體大小
const textProps = defineProps<{
    text: string; // 接受文字內容的 props,為必填
    fontSize?: string; // 接受字體大小的 props,為可選
}>();
</script>
  • 設計概念:使用 defineProps 定義 props,允許外部使用者設定顯示的文字 (text) 和字體大小 (fontSize)。
  • 這使得元件可以根據需求輕鬆進行高度客製化,並在不同的視覺風格中使用。

動態樣式與動效設計實作

@layer utilities {
    @property --k {
        syntax: "<number>";
        initial-value: 0;
        inherits: false;
    }

    .gradient-text {
        --k: 0;
        background: linear-gradient(90deg,
                hsl(calc(var(--k) * 1turn), 95%, 65%),
                hsl(calc(var(--k) * 1turn + 90deg), 95%, 65%));
        -webkit-background-clip: text;
        background-clip: text;
        color: transparent;
        filter: url(#f);
        font-size: clamp(1.5rem, 5vw, 2.5rem);
        text-transform: uppercase;
        text-align: center;
        margin-bottom: 2rem;
    }

    @keyframes k {
        to {
            --k: 1;
        }
    }

    .animate-k {
        animation: k 4s linear infinite;
    }
}

核心樣式設計

  • 漸變背景:使用 linear-gradient 搭配 HSL 色彩模式,使文字背景呈現動態流動的效果,讓色彩不斷變化,增加視覺吸引力。

  • 文字濾鏡與動畫filter: url(#f) 加入模糊和色彩增強效果,使文字更具立體感和衝擊力。搭配 @keyframes k 定義的動畫,讓顏色隨著時間變化,創造出流動感。

  • 動態效果animation: k 4s linear infinite,讓文字色彩持續不斷流動,避免靜態的單調感,提升視覺動感。

元件化的優勢

  • 高度重用性:通過元件化的方式,這些炫彩效果可以輕鬆被引用至不同的頁面和項目中,提升設計的一致性。
  • 易於客製化:透過 props 的設計,使用者可以根據需求調整文字內容和字體大小,增強了元件的靈活性。
  • 視覺吸引力強:炫彩的文字動態效果使得視覺呈現不再單調,能夠引起使用者的注意。

結語

只要幾個簡單的步驟,就能讓原本平凡的文字變成超吸睛的炫彩視覺!
不論你是第一次接觸動態設計,還是已經是個技術高手,勇敢嘗試新的設計風格,總能讓你走得更遠。

就像這些炫彩效果一樣,跳脫框架,大膽創新,讓自己的設計閃閃發光!
把學到的技巧變成你的超能力,接下來的創作就由你大展身手啦~

GO,為你的設計人生加點色彩吧!O(≧▽≦)O💖


上一篇
Day13 Vue.js 動效分類實戰 (5) 視差滾動特輯 - 用 GSAP 編織日夜交替的視覺詩歌
下一篇
Day15 Vue.js 動效分類實戰 (7) 3D 翻轉卡特輯 - 視覺震撼的完美翻轉效果
系列文
創意前端設計:用 Vue.js 打造 30 個互動實用功能15
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言